package com.cskaoyan.javase.method._1basic;
/**
 * 方法的语法:
 * [修饰符列表] 返回值类型 方法名 (形式参数列表){
 *   //方法体
 * }
 * 思考:
 *      我们在定义方法时,可以通过形参数据类型来,明确方法需要传入的实参的数据类型
 *      那么问题来了:
 *          实参的数据类型必须和形参的数据类型保持一致吗?
 *          不需要,但是也不是乱写的,而是需要保持兼容!!!!
 *          什么叫兼容呢?
 *              当实参的数据类型能够自动类型转换到形参的数据类型时,形参实参数据类型可以不一样
 *              这就叫做兼容!!
 *
 * 以上结论可以举一反三:
 *      1.基本数据类型存在自动类型转换,引用数据类型也存在自动类型,引用数据类型也具有这种特点
 *          (先记住结论,后面再说具体的案例)
 *      2.形参的实参的数据类型存在自动类型转换,思考:
 *          方法的返回值类型和具体返回值的数据类型,有没有自动类型转换?
 *          也存在,一样的,当具体返回值的数据类型可以自动转换成方法的返回值类型时,能够通过编译
 *
 * @since 17:12
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo2 {
    public static void main(String[] args) {
        test(0.1);
        // 123默认是int
        test(123);
        // 0.1F是float
        test(0.1F);
        test(123L);
        byte a = 10;
        test(a);


        test2(a);
        short b = 10;
        test2(b);
        test2('a');
        test2(123);
        test2(123L);

        // 0.1是double, double -> long 是强转,不是自动类型转换
        // test2(0.1);
    }

    public static double method(){
        // return 0.1;
        // return 0.1F;
        // return 123;
        return 123L;

    }

    public static void test(double num){
    }

    public static void test2(long num) {
    }
}
